{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3.8.5 64-bit"
  },
  "interpreter": {
   "hash": "6de75d21c2594102d9276817922b7fd0f8914985ad781a480f159997b19750b6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#运行所有单元直到运行到最后一单元时打开http://127.0.0.1:8050/ 然后等待一会直到显示出所有数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import csv\n",
    "from wordcloud import WordCloud\n",
    "import jieba\n",
    "import re\n",
    "import json\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "['http://113.117.67.132:5412', 'http://114.238.54.89:766', 'http://114.227.162.133:3617', 'http://58.255.198.145:36410', 'http://61.191.85.57:766', 'http://125.126.110.90:894', 'http://220.175.214.153:766', 'http://60.189.202.66:5412', 'http://124.112.171.111:3617', 'http://36.56.102.2:894', 'http://60.174.190.13:766', 'http://115.202.201.134:894', 'http://183.94.210.201:3617', 'http://36.56.103.246:766', 'http://114.100.1.210:766', 'http://220.179.211.219:23564', 'http://49.87.140.153:3617', 'http://114.100.3.123:36410', 'http://60.174.190.209:894', 'http://183.92.74.109:5412']\n"
     ]
    }
   ],
   "source": [
    "import dash\n",
    "import dash_core_components as dcc\n",
    "import dash_html_components as html\n",
    "from dash.dependencies import Input, Output,State\n",
    "import plotly.graph_objs as go \n",
    "import plotly.express as px"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# client=pymongo.MongoClient()\n",
    "# db=client[\"zhihu3\"]\n",
    "# collection_users=db[\"users\"]\n",
    "\n",
    "df_user1=pd.DataFrame(pd.read_csv(\"users.csv\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                             _id      name                         info  \\\n",
       "0       60a72e0d8c2a661d16fd7b3b  赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "1       60a72e0e8c2a661d16fd7b3f     谷歌开发者                          NaN   \n",
       "2       60a72e0e8c2a661d16fd7b41       王太虚                 国家一级退堂鼓表演艺术家   \n",
       "3       60a72e0e8c2a661d16fd7b42       迟先生                 这个人很菜，什么也不会。   \n",
       "4       60a72e0e8c2a661d16fd7b43      知乎圈子                          NaN   \n",
       "...                          ...       ...                          ...   \n",
       "724739  60a792978c2a661d161cb0b6        明夷                            无   \n",
       "724740  60a792988c2a661d161cb0b9    敬往事一杯酒                  不是本可以 而是来不及   \n",
       "724741  60a792988c2a661d161cb0d3     黑猫和白猫                          NaN   \n",
       "724742  60a792988c2a661d161cb0d5       陈建宏                Indescribable   \n",
       "724743  60a792988c2a661d161cb0da        即墨                         一介草民   \n",
       "\n",
       "        followers      like  \n",
       "0           68257  290392.0  \n",
       "1           85484       NaN  \n",
       "2           18970       NaN  \n",
       "3            9684   10950.0  \n",
       "4           27654       NaN  \n",
       "...           ...       ...  \n",
       "724739        134     490.0  \n",
       "724740         50      60.0  \n",
       "724741        104     392.0  \n",
       "724742         10      18.0  \n",
       "724743         36     114.0  \n",
       "\n",
       "[724744 rows x 5 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>_id</th>\n      <th>name</th>\n      <th>info</th>\n      <th>followers</th>\n      <th>like</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>60a72e0e8c2a661d16fd7b3f</td>\n      <td>谷歌开发者</td>\n      <td>NaN</td>\n      <td>85484</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>60a72e0e8c2a661d16fd7b41</td>\n      <td>王太虚</td>\n      <td>国家一级退堂鼓表演艺术家</td>\n      <td>18970</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>60a72e0e8c2a661d16fd7b42</td>\n      <td>迟先生</td>\n      <td>这个人很菜，什么也不会。</td>\n      <td>9684</td>\n      <td>10950.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>60a72e0e8c2a661d16fd7b43</td>\n      <td>知乎圈子</td>\n      <td>NaN</td>\n      <td>27654</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>724739</th>\n      <td>60a792978c2a661d161cb0b6</td>\n      <td>明夷</td>\n      <td>无</td>\n      <td>134</td>\n      <td>490.0</td>\n    </tr>\n    <tr>\n      <th>724740</th>\n      <td>60a792988c2a661d161cb0b9</td>\n      <td>敬往事一杯酒</td>\n      <td>不是本可以 而是来不及</td>\n      <td>50</td>\n      <td>60.0</td>\n    </tr>\n    <tr>\n      <th>724741</th>\n      <td>60a792988c2a661d161cb0d3</td>\n      <td>黑猫和白猫</td>\n      <td>NaN</td>\n      <td>104</td>\n      <td>392.0</td>\n    </tr>\n    <tr>\n      <th>724742</th>\n      <td>60a792988c2a661d161cb0d5</td>\n      <td>陈建宏</td>\n      <td>Indescribable</td>\n      <td>10</td>\n      <td>18.0</td>\n    </tr>\n    <tr>\n      <th>724743</th>\n      <td>60a792988c2a661d161cb0da</td>\n      <td>即墨</td>\n      <td>一介草民</td>\n      <td>36</td>\n      <td>114.0</td>\n    </tr>\n  </tbody>\n</table>\n<p>724744 rows × 5 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "source": [
    "df_user1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_user2=df_user1.drop_duplicates(subset=[\"name\",\"info\"],keep=\"first\").apply(pd.to_numeric,errors=\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfFoLi=df_user2[~np.isnan(df_user2.like)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                           _id      name                       info  \\\n",
       "283   60a72e208c2a661d16fd8430  杨超越黑粉头子站        伪装成粉丝的黑粉还是伪装成黑粉的粉丝？   \n",
       "1486  60a72e6c8c2a661d16fdac65       杜嘟嘟  公众号：杜嘟嘟嘴很毒。守护好人的爱情，是我的目标。   \n",
       "197   60a72e1a8c2a661d16fd80e8      花猫哥哥        微信公众号《猫哥的视界》《猫哥的世界》   \n",
       "2446  60a72ea58c2a661d16fdc917      山山笔记         公众号：山山笔记，专注你的励志/成长   \n",
       "3165  60a72ecd8c2a661d16fddb4d       疯死沃                        NaN   \n",
       "\n",
       "      followers       like  \n",
       "283      102522  2068125.0  \n",
       "1486     197234  1745654.0  \n",
       "197      251722  1428587.0  \n",
       "2446     181475  1029522.0  \n",
       "3165      84383   870144.0  "
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>_id</th>\n      <th>name</th>\n      <th>info</th>\n      <th>followers</th>\n      <th>like</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>283</th>\n      <td>60a72e208c2a661d16fd8430</td>\n      <td>杨超越黑粉头子站</td>\n      <td>伪装成粉丝的黑粉还是伪装成黑粉的粉丝？</td>\n      <td>102522</td>\n      <td>2068125.0</td>\n    </tr>\n    <tr>\n      <th>1486</th>\n      <td>60a72e6c8c2a661d16fdac65</td>\n      <td>杜嘟嘟</td>\n      <td>公众号：杜嘟嘟嘴很毒。守护好人的爱情，是我的目标。</td>\n      <td>197234</td>\n      <td>1745654.0</td>\n    </tr>\n    <tr>\n      <th>197</th>\n      <td>60a72e1a8c2a661d16fd80e8</td>\n      <td>花猫哥哥</td>\n      <td>微信公众号《猫哥的视界》《猫哥的世界》</td>\n      <td>251722</td>\n      <td>1428587.0</td>\n    </tr>\n    <tr>\n      <th>2446</th>\n      <td>60a72ea58c2a661d16fdc917</td>\n      <td>山山笔记</td>\n      <td>公众号：山山笔记，专注你的励志/成长</td>\n      <td>181475</td>\n      <td>1029522.0</td>\n    </tr>\n    <tr>\n      <th>3165</th>\n      <td>60a72ecd8c2a661d16fddb4d</td>\n      <td>疯死沃</td>\n      <td>NaN</td>\n      <td>84383</td>\n      <td>870144.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "execution_count": 8
    }
   ],
   "source": [
    "dfFoLi.sort_values(by=\"like\",ascending=False).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "max_fo=max(dfFoLi.followers)\n",
    "max_li=max(dfFoLi.like)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "listBins = [0, 10, 100, 1000, 10000, 100000, 1000337]\n",
    "listLabels = ['0_10','10_100','100_1000','1000_10000','10000_100000','100000以上']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dfFoLi_show=dfFoLi[(dfFoLi.like>max_li/150) & ( dfFoLi.like<max_li/100)]\n",
    "dfFoLi_show=dfFoLi.iloc[:,[3,4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "        followers      like\n",
       "0           68257  290392.0\n",
       "3            9684   10950.0\n",
       "7             543    2264.0\n",
       "8            3060    3759.0\n",
       "9            9521    7818.0\n",
       "...           ...       ...\n",
       "724739        134     490.0\n",
       "724740         50      60.0\n",
       "724741        104     392.0\n",
       "724742         10      18.0\n",
       "724743         36     114.0\n",
       "\n",
       "[474565 rows x 2 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>followers</th>\n      <th>like</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>68257</td>\n      <td>290392.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>9684</td>\n      <td>10950.0</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>543</td>\n      <td>2264.0</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>3060</td>\n      <td>3759.0</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>9521</td>\n      <td>7818.0</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>724739</th>\n      <td>134</td>\n      <td>490.0</td>\n    </tr>\n    <tr>\n      <th>724740</th>\n      <td>50</td>\n      <td>60.0</td>\n    </tr>\n    <tr>\n      <th>724741</th>\n      <td>104</td>\n      <td>392.0</td>\n    </tr>\n    <tr>\n      <th>724742</th>\n      <td>10</td>\n      <td>18.0</td>\n    </tr>\n    <tr>\n      <th>724743</th>\n      <td>36</td>\n      <td>114.0</td>\n    </tr>\n  </tbody>\n</table>\n<p>474565 rows × 2 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 12
    }
   ],
   "source": [
    "dfFoLi_show"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\core\\indexing.py:1597: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n  self.obj[key] = value\nC:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\core\\indexing.py:1676: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n  self._setitem_single_column(ilocs[0], value, pi)\n"
     ]
    }
   ],
   "source": [
    "dfFoLi_show.loc[:,\"followers_range\"]=pd.cut(dfFoLi_show['followers'], bins=listBins, labels=listLabels, include_lowest=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfFoLi_show=dfFoLi_show.groupby(by=\"followers_range\").aggregate({\"like\":\"mean\",\"followers\":\"size\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfFoLi_show=dfFoLi_show.rename(columns={\"followers\":\"num\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2352e9a64c0>"
      ]
     },
     "metadata": {},
     "execution_count": 16
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\textpath.py:84: RuntimeWarning: Glyph 20197 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=LOAD_NO_HINTING)\n",
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\textpath.py:84: RuntimeWarning: Glyph 19978 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=LOAD_NO_HINTING)\n",
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:214: RuntimeWarning: Glyph 20197 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:214: RuntimeWarning: Glyph 19978 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:183: RuntimeWarning: Glyph 20197 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "C:\\Users\\xzy12\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:183: RuntimeWarning: Glyph 19978 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"262.575937pt\" version=\"1.1\" viewBox=\"0 0 417.924006 262.575937\" width=\"417.924006pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 262.575937 \r\nL 417.924006 262.575937 \r\nL 417.924006 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 66.053125 224.64 \r\nL 400.853125 224.64 \r\nL 400.853125 7.2 \r\nL 66.053125 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m34714653f7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"81.271307\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0_10 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n       <path d=\"M 50.984375 -16.609375 \r\nL 50.984375 -23.578125 \r\nL -0.984375 -23.578125 \r\nL -0.984375 -16.609375 \r\nz\r\n\" id=\"DejaVuSans-95\"/>\r\n       <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      </defs>\r\n      <g transform=\"translate(69.227557 239.061875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-95\"/>\r\n       <use x=\"113.623047\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"177.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"142.144034\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 10_100 -->\r\n      <g transform=\"translate(123.737784 239.061875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-95\"/>\r\n       <use x=\"177.246094\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"240.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"304.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"203.016761\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 100_1000 -->\r\n      <g transform=\"translate(178.248011 239.061875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-95\"/>\r\n       <use x=\"240.869141\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"304.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"368.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"431.738281\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"263.889489\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 1000_10000 -->\r\n      <g transform=\"translate(232.758239 239.061875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-95\"/>\r\n       <use x=\"304.492188\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"368.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"431.738281\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"495.361328\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"558.984375\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"324.762216\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 10000_100000 -->\r\n      <g transform=\"translate(287.268466 239.061875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-95\"/>\r\n       <use x=\"368.115234\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"431.738281\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"495.361328\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"558.984375\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"622.607422\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"686.230469\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"385.634943\" xlink:href=\"#m34714653f7\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 100000以上 -->\r\n      <defs>\r\n       <path d=\"M 4.984375 -17.671875 \r\nL 4.984375 70.515625 \r\nL 54.984375 70.515625 \r\nL 54.984375 -17.671875 \r\nz\r\nM 10.59375 -12.109375 \r\nL 49.421875 -12.109375 \r\nL 49.421875 64.890625 \r\nL 10.59375 64.890625 \r\nz\r\n\" id=\"DejaVuSans-20197\"/>\r\n       <path d=\"M 4.984375 -17.671875 \r\nL 4.984375 70.515625 \r\nL 54.984375 70.515625 \r\nL 54.984375 -17.671875 \r\nz\r\nM 10.59375 -12.109375 \r\nL 49.421875 -12.109375 \r\nL 49.421875 64.890625 \r\nL 10.59375 64.890625 \r\nz\r\n\" id=\"DejaVuSans-19978\"/>\r\n      </defs>\r\n      <g transform=\"translate(360.545881 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"381.738281\" xlink:href=\"#DejaVuSans-20197\"/>\r\n       <use x=\"441.748047\" xlink:href=\"#DejaVuSans-19978\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_7\">\r\n     <!-- followers_range -->\r\n     <defs>\r\n      <path d=\"M 37.109375 75.984375 \r\nL 37.109375 68.5 \r\nL 28.515625 68.5 \r\nQ 23.6875 68.5 21.796875 66.546875 \r\nQ 19.921875 64.59375 19.921875 59.515625 \r\nL 19.921875 54.6875 \r\nL 34.71875 54.6875 \r\nL 34.71875 47.703125 \r\nL 19.921875 47.703125 \r\nL 19.921875 0 \r\nL 10.890625 0 \r\nL 10.890625 47.703125 \r\nL 2.296875 47.703125 \r\nL 2.296875 54.6875 \r\nL 10.890625 54.6875 \r\nL 10.890625 58.5 \r\nQ 10.890625 67.625 15.140625 71.796875 \r\nQ 19.390625 75.984375 28.609375 75.984375 \r\nz\r\n\" id=\"DejaVuSans-102\"/>\r\n      <path d=\"M 30.609375 48.390625 \r\nQ 23.390625 48.390625 19.1875 42.75 \r\nQ 14.984375 37.109375 14.984375 27.296875 \r\nQ 14.984375 17.484375 19.15625 11.84375 \r\nQ 23.34375 6.203125 30.609375 6.203125 \r\nQ 37.796875 6.203125 41.984375 11.859375 \r\nQ 46.1875 17.53125 46.1875 27.296875 \r\nQ 46.1875 37.015625 41.984375 42.703125 \r\nQ 37.796875 48.390625 30.609375 48.390625 \r\nz\r\nM 30.609375 56 \r\nQ 42.328125 56 49.015625 48.375 \r\nQ 55.71875 40.765625 55.71875 27.296875 \r\nQ 55.71875 13.875 49.015625 6.21875 \r\nQ 42.328125 -1.421875 30.609375 -1.421875 \r\nQ 18.84375 -1.421875 12.171875 6.21875 \r\nQ 5.515625 13.875 5.515625 27.296875 \r\nQ 5.515625 40.765625 12.171875 48.375 \r\nQ 18.84375 56 30.609375 56 \r\nz\r\n\" id=\"DejaVuSans-111\"/>\r\n      <path d=\"M 9.421875 75.984375 \r\nL 18.40625 75.984375 \r\nL 18.40625 0 \r\nL 9.421875 0 \r\nz\r\n\" id=\"DejaVuSans-108\"/>\r\n      <path d=\"M 4.203125 54.6875 \r\nL 13.1875 54.6875 \r\nL 24.421875 12.015625 \r\nL 35.59375 54.6875 \r\nL 46.1875 54.6875 \r\nL 57.421875 12.015625 \r\nL 68.609375 54.6875 \r\nL 77.59375 54.6875 \r\nL 63.28125 0 \r\nL 52.6875 0 \r\nL 40.921875 44.828125 \r\nL 29.109375 0 \r\nL 18.5 0 \r\nz\r\n\" id=\"DejaVuSans-119\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n      <path d=\"M 41.109375 46.296875 \r\nQ 39.59375 47.171875 37.8125 47.578125 \r\nQ 36.03125 48 33.890625 48 \r\nQ 26.265625 48 22.1875 43.046875 \r\nQ 18.109375 38.09375 18.109375 28.8125 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.1875 \r\nQ 20.953125 51.171875 25.484375 53.578125 \r\nQ 30.03125 56 36.53125 56 \r\nQ 37.453125 56 38.578125 55.875 \r\nQ 39.703125 55.765625 41.0625 55.515625 \r\nz\r\n\" id=\"DejaVuSans-114\"/>\r\n      <path d=\"M 44.28125 53.078125 \r\nL 44.28125 44.578125 \r\nQ 40.484375 46.53125 36.375 47.5 \r\nQ 32.28125 48.484375 27.875 48.484375 \r\nQ 21.1875 48.484375 17.84375 46.4375 \r\nQ 14.5 44.390625 14.5 40.28125 \r\nQ 14.5 37.15625 16.890625 35.375 \r\nQ 19.28125 33.59375 26.515625 31.984375 \r\nL 29.59375 31.296875 \r\nQ 39.15625 29.25 43.1875 25.515625 \r\nQ 47.21875 21.78125 47.21875 15.09375 \r\nQ 47.21875 7.46875 41.1875 3.015625 \r\nQ 35.15625 -1.421875 24.609375 -1.421875 \r\nQ 20.21875 -1.421875 15.453125 -0.5625 \r\nQ 10.6875 0.296875 5.421875 2 \r\nL 5.421875 11.28125 \r\nQ 10.40625 8.6875 15.234375 7.390625 \r\nQ 20.0625 6.109375 24.8125 6.109375 \r\nQ 31.15625 6.109375 34.5625 8.28125 \r\nQ 37.984375 10.453125 37.984375 14.40625 \r\nQ 37.984375 18.0625 35.515625 20.015625 \r\nQ 33.0625 21.96875 24.703125 23.78125 \r\nL 21.578125 24.515625 \r\nQ 13.234375 26.265625 9.515625 29.90625 \r\nQ 5.8125 33.546875 5.8125 39.890625 \r\nQ 5.8125 47.609375 11.28125 51.796875 \r\nQ 16.75 56 26.8125 56 \r\nQ 31.78125 56 36.171875 55.265625 \r\nQ 40.578125 54.546875 44.28125 53.078125 \r\nz\r\n\" id=\"DejaVuSans-115\"/>\r\n      <path d=\"M 34.28125 27.484375 \r\nQ 23.390625 27.484375 19.1875 25 \r\nQ 14.984375 22.515625 14.984375 16.5 \r\nQ 14.984375 11.71875 18.140625 8.90625 \r\nQ 21.296875 6.109375 26.703125 6.109375 \r\nQ 34.1875 6.109375 38.703125 11.40625 \r\nQ 43.21875 16.703125 43.21875 25.484375 \r\nL 43.21875 27.484375 \r\nz\r\nM 52.203125 31.203125 \r\nL 52.203125 0 \r\nL 43.21875 0 \r\nL 43.21875 8.296875 \r\nQ 40.140625 3.328125 35.546875 0.953125 \r\nQ 30.953125 -1.421875 24.3125 -1.421875 \r\nQ 15.921875 -1.421875 10.953125 3.296875 \r\nQ 6 8.015625 6 15.921875 \r\nQ 6 25.140625 12.171875 29.828125 \r\nQ 18.359375 34.515625 30.609375 34.515625 \r\nL 43.21875 34.515625 \r\nL 43.21875 35.40625 \r\nQ 43.21875 41.609375 39.140625 45 \r\nQ 35.0625 48.390625 27.6875 48.390625 \r\nQ 23 48.390625 18.546875 47.265625 \r\nQ 14.109375 46.140625 10.015625 43.890625 \r\nL 10.015625 52.203125 \r\nQ 14.9375 54.109375 19.578125 55.046875 \r\nQ 24.21875 56 28.609375 56 \r\nQ 40.484375 56 46.34375 49.84375 \r\nQ 52.203125 43.703125 52.203125 31.203125 \r\nz\r\n\" id=\"DejaVuSans-97\"/>\r\n      <path d=\"M 54.890625 33.015625 \r\nL 54.890625 0 \r\nL 45.90625 0 \r\nL 45.90625 32.71875 \r\nQ 45.90625 40.484375 42.875 44.328125 \r\nQ 39.84375 48.1875 33.796875 48.1875 \r\nQ 26.515625 48.1875 22.3125 43.546875 \r\nQ 18.109375 38.921875 18.109375 30.90625 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.1875 \r\nQ 21.34375 51.125 25.703125 53.5625 \r\nQ 30.078125 56 35.796875 56 \r\nQ 45.21875 56 50.046875 50.171875 \r\nQ 54.890625 44.34375 54.890625 33.015625 \r\nz\r\n\" id=\"DejaVuSans-110\"/>\r\n      <path d=\"M 45.40625 27.984375 \r\nQ 45.40625 37.75 41.375 43.109375 \r\nQ 37.359375 48.484375 30.078125 48.484375 \r\nQ 22.859375 48.484375 18.828125 43.109375 \r\nQ 14.796875 37.75 14.796875 27.984375 \r\nQ 14.796875 18.265625 18.828125 12.890625 \r\nQ 22.859375 7.515625 30.078125 7.515625 \r\nQ 37.359375 7.515625 41.375 12.890625 \r\nQ 45.40625 18.265625 45.40625 27.984375 \r\nz\r\nM 54.390625 6.78125 \r\nQ 54.390625 -7.171875 48.1875 -13.984375 \r\nQ 42 -20.796875 29.203125 -20.796875 \r\nQ 24.46875 -20.796875 20.265625 -20.09375 \r\nQ 16.0625 -19.390625 12.109375 -17.921875 \r\nL 12.109375 -9.1875 \r\nQ 16.0625 -11.328125 19.921875 -12.34375 \r\nQ 23.78125 -13.375 27.78125 -13.375 \r\nQ 36.625 -13.375 41.015625 -8.765625 \r\nQ 45.40625 -4.15625 45.40625 5.171875 \r\nL 45.40625 9.625 \r\nQ 42.625 4.78125 38.28125 2.390625 \r\nQ 33.9375 0 27.875 0 \r\nQ 17.828125 0 11.671875 7.65625 \r\nQ 5.515625 15.328125 5.515625 27.984375 \r\nQ 5.515625 40.671875 11.671875 48.328125 \r\nQ 17.828125 56 27.875 56 \r\nQ 33.9375 56 38.28125 53.609375 \r\nQ 42.625 51.21875 45.40625 46.390625 \r\nL 45.40625 54.6875 \r\nL 54.390625 54.6875 \r\nz\r\n\" id=\"DejaVuSans-103\"/>\r\n     </defs>\r\n     <g transform=\"translate(193.93125 253.018125)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-102\"/>\r\n      <use x=\"35.205078\" xlink:href=\"#DejaVuSans-111\"/>\r\n      <use x=\"96.386719\" xlink:href=\"#DejaVuSans-108\"/>\r\n      <use x=\"124.169922\" xlink:href=\"#DejaVuSans-108\"/>\r\n      <use x=\"151.953125\" xlink:href=\"#DejaVuSans-111\"/>\r\n      <use x=\"213.134766\" xlink:href=\"#DejaVuSans-119\"/>\r\n      <use x=\"294.921875\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"356.445312\" xlink:href=\"#DejaVuSans-114\"/>\r\n      <use x=\"397.558594\" xlink:href=\"#DejaVuSans-115\"/>\r\n      <use x=\"449.658203\" xlink:href=\"#DejaVuSans-95\"/>\r\n      <use x=\"499.658203\" xlink:href=\"#DejaVuSans-114\"/>\r\n      <use x=\"540.771484\" xlink:href=\"#DejaVuSans-97\"/>\r\n      <use x=\"602.050781\" xlink:href=\"#DejaVuSans-110\"/>\r\n      <use x=\"665.429688\" xlink:href=\"#DejaVuSans-103\"/>\r\n      <use x=\"728.90625\" xlink:href=\"#DejaVuSans-101\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_7\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m507c9c51df\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"214.777909\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(52.690625 218.577127)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"181.150472\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 50000 -->\r\n      <defs>\r\n       <path d=\"M 10.796875 72.90625 \r\nL 49.515625 72.90625 \r\nL 49.515625 64.59375 \r\nL 19.828125 64.59375 \r\nL 19.828125 46.734375 \r\nQ 21.96875 47.46875 24.109375 47.828125 \r\nQ 26.265625 48.1875 28.421875 48.1875 \r\nQ 40.625 48.1875 47.75 41.5 \r\nQ 54.890625 34.8125 54.890625 23.390625 \r\nQ 54.890625 11.625 47.5625 5.09375 \r\nQ 40.234375 -1.421875 26.90625 -1.421875 \r\nQ 22.3125 -1.421875 17.546875 -0.640625 \r\nQ 12.796875 0.140625 7.71875 1.703125 \r\nL 7.71875 11.625 \r\nQ 12.109375 9.234375 16.796875 8.0625 \r\nQ 21.484375 6.890625 26.703125 6.890625 \r\nQ 35.15625 6.890625 40.078125 11.328125 \r\nQ 45.015625 15.765625 45.015625 23.390625 \r\nQ 45.015625 31 40.078125 35.4375 \r\nQ 35.15625 39.890625 26.703125 39.890625 \r\nQ 22.75 39.890625 18.8125 39.015625 \r\nQ 14.890625 38.140625 10.796875 36.28125 \r\nz\r\n\" id=\"DejaVuSans-53\"/>\r\n      </defs>\r\n      <g transform=\"translate(27.240625 184.94969)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_9\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"147.523035\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 100000 -->\r\n      <g transform=\"translate(20.878125 151.322254)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"113.895598\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 150000 -->\r\n      <g transform=\"translate(20.878125 117.694817)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"80.268161\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 200000 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(20.878125 84.06738)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"46.640724\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 250000 -->\r\n      <g transform=\"translate(20.878125 50.439943)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.053125\" xlink:href=\"#m507c9c51df\" y=\"13.013287\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 300000 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(20.878125 16.812506)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"254.492188\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"318.115234\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_15\">\r\n     <!-- size -->\r\n     <defs>\r\n      <path d=\"M 9.421875 54.6875 \r\nL 18.40625 54.6875 \r\nL 18.40625 0 \r\nL 9.421875 0 \r\nz\r\nM 9.421875 75.984375 \r\nL 18.40625 75.984375 \r\nL 18.40625 64.59375 \r\nL 9.421875 64.59375 \r\nz\r\n\" id=\"DejaVuSans-105\"/>\r\n      <path d=\"M 5.515625 54.6875 \r\nL 48.1875 54.6875 \r\nL 48.1875 46.484375 \r\nL 14.40625 7.171875 \r\nL 48.1875 7.171875 \r\nL 48.1875 0 \r\nL 4.296875 0 \r\nL 4.296875 8.203125 \r\nL 38.09375 47.515625 \r\nL 5.515625 47.515625 \r\nz\r\n\" id=\"DejaVuSans-122\"/>\r\n     </defs>\r\n     <g transform=\"translate(14.798438 125.614531)rotate(-90)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-115\"/>\r\n      <use x=\"52.099609\" xlink:href=\"#DejaVuSans-105\"/>\r\n      <use x=\"79.882812\" xlink:href=\"#DejaVuSans-122\"/>\r\n      <use x=\"132.373047\" xlink:href=\"#DejaVuSans-101\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_14\">\r\n    <path clip-path=\"url(#p5c0166569a)\" d=\"M 81.271307 137.247163 \r\nL 142.144034 90.722931 \r\nL 203.016761 126.077473 \r\nL 263.889489 187.92371 \r\nL 324.762216 212.782456 \r\nL 385.634943 214.745626 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"line2d_15\">\r\n    <path clip-path=\"url(#p5c0166569a)\" d=\"M 81.271307 214.756364 \r\nL 142.144034 214.525362 \r\nL 203.016761 213.360665 \r\nL 263.889489 210.597449 \r\nL 324.762216 188.909201 \r\nL 385.634943 17.083636 \r\n\" style=\"fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 66.053125 224.64 \r\nL 66.053125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 400.853125 224.64 \r\nL 400.853125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 66.053125 224.64 \r\nL 400.853125 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 66.053125 7.2 \r\nL 400.853125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"legend_1\">\r\n    <g id=\"patch_7\">\r\n     <path d=\"M 73.053125 44.834375 \r\nL 172.01875 44.834375 \r\nQ 174.01875 44.834375 174.01875 42.834375 \r\nL 174.01875 14.2 \r\nQ 174.01875 12.2 172.01875 12.2 \r\nL 73.053125 12.2 \r\nQ 71.053125 12.2 71.053125 14.2 \r\nL 71.053125 42.834375 \r\nQ 71.053125 44.834375 73.053125 44.834375 \r\nz\r\n\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\r\n    </g>\r\n    <g id=\"line2d_16\">\r\n     <path d=\"M 75.053125 20.298437 \r\nL 95.053125 20.298437 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n    </g>\r\n    <g id=\"line2d_17\"/>\r\n    <g id=\"text_16\">\r\n     <!-- num in range -->\r\n     <defs>\r\n      <path d=\"M 8.5 21.578125 \r\nL 8.5 54.6875 \r\nL 17.484375 54.6875 \r\nL 17.484375 21.921875 \r\nQ 17.484375 14.15625 20.5 10.265625 \r\nQ 23.53125 6.390625 29.59375 6.390625 \r\nQ 36.859375 6.390625 41.078125 11.03125 \r\nQ 45.3125 15.671875 45.3125 23.6875 \r\nL 45.3125 54.6875 \r\nL 54.296875 54.6875 \r\nL 54.296875 0 \r\nL 45.3125 0 \r\nL 45.3125 8.40625 \r\nQ 42.046875 3.421875 37.71875 1 \r\nQ 33.40625 -1.421875 27.6875 -1.421875 \r\nQ 18.265625 -1.421875 13.375 4.4375 \r\nQ 8.5 10.296875 8.5 21.578125 \r\nz\r\nM 31.109375 56 \r\nz\r\n\" id=\"DejaVuSans-117\"/>\r\n      <path d=\"M 52 44.1875 \r\nQ 55.375 50.25 60.0625 53.125 \r\nQ 64.75 56 71.09375 56 \r\nQ 79.640625 56 84.28125 50.015625 \r\nQ 88.921875 44.046875 88.921875 33.015625 \r\nL 88.921875 0 \r\nL 79.890625 0 \r\nL 79.890625 32.71875 \r\nQ 79.890625 40.578125 77.09375 44.375 \r\nQ 74.3125 48.1875 68.609375 48.1875 \r\nQ 61.625 48.1875 57.5625 43.546875 \r\nQ 53.515625 38.921875 53.515625 30.90625 \r\nL 53.515625 0 \r\nL 44.484375 0 \r\nL 44.484375 32.71875 \r\nQ 44.484375 40.625 41.703125 44.40625 \r\nQ 38.921875 48.1875 33.109375 48.1875 \r\nQ 26.21875 48.1875 22.15625 43.53125 \r\nQ 18.109375 38.875 18.109375 30.90625 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.1875 \r\nQ 21.1875 51.21875 25.484375 53.609375 \r\nQ 29.78125 56 35.6875 56 \r\nQ 41.65625 56 45.828125 52.96875 \r\nQ 50 49.953125 52 44.1875 \r\nz\r\n\" id=\"DejaVuSans-109\"/>\r\n      <path id=\"DejaVuSans-32\"/>\r\n     </defs>\r\n     <g transform=\"translate(103.053125 23.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-110\"/>\r\n      <use x=\"63.378906\" xlink:href=\"#DejaVuSans-117\"/>\r\n      <use x=\"126.757812\" xlink:href=\"#DejaVuSans-109\"/>\r\n      <use x=\"224.169922\" xlink:href=\"#DejaVuSans-32\"/>\r\n      <use x=\"255.957031\" xlink:href=\"#DejaVuSans-105\"/>\r\n      <use x=\"283.740234\" xlink:href=\"#DejaVuSans-110\"/>\r\n      <use x=\"347.119141\" xlink:href=\"#DejaVuSans-32\"/>\r\n      <use x=\"378.90625\" xlink:href=\"#DejaVuSans-114\"/>\r\n      <use x=\"420.019531\" xlink:href=\"#DejaVuSans-97\"/>\r\n      <use x=\"481.298828\" xlink:href=\"#DejaVuSans-110\"/>\r\n      <use x=\"544.677734\" xlink:href=\"#DejaVuSans-103\"/>\r\n      <use x=\"608.154297\" xlink:href=\"#DejaVuSans-101\"/>\r\n     </g>\r\n    </g>\r\n    <g id=\"line2d_18\">\r\n     <path d=\"M 75.053125 34.976562 \r\nL 95.053125 34.976562 \r\n\" style=\"fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;\"/>\r\n    </g>\r\n    <g id=\"line2d_19\"/>\r\n    <g id=\"text_17\">\r\n     <!-- like_mean -->\r\n     <defs>\r\n      <path d=\"M 9.078125 75.984375 \r\nL 18.109375 75.984375 \r\nL 18.109375 31.109375 \r\nL 44.921875 54.6875 \r\nL 56.390625 54.6875 \r\nL 27.390625 29.109375 \r\nL 57.625 0 \r\nL 45.90625 0 \r\nL 18.109375 26.703125 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nz\r\n\" id=\"DejaVuSans-107\"/>\r\n     </defs>\r\n     <g transform=\"translate(103.053125 38.476562)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-108\"/>\r\n      <use x=\"27.783203\" xlink:href=\"#DejaVuSans-105\"/>\r\n      <use x=\"55.566406\" xlink:href=\"#DejaVuSans-107\"/>\r\n      <use x=\"109.851562\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"171.375\" xlink:href=\"#DejaVuSans-95\"/>\r\n      <use x=\"221.375\" xlink:href=\"#DejaVuSans-109\"/>\r\n      <use x=\"318.787109\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"380.310547\" xlink:href=\"#DejaVuSans-97\"/>\r\n      <use x=\"441.589844\" xlink:href=\"#DejaVuSans-110\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p5c0166569a\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"66.053125\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "fig,ax=plt.subplots()\n",
    "ax.plot(dfFoLi_show.index,dfFoLi_show.num,label=\"num in range\")\n",
    "ax.plot(dfFoLi_show.index,dfFoLi_show.like,label=\"like_mean\")\n",
    "ax.set_xlabel(\"followers_range\")\n",
    "ax.set_ylabel(\"size\")\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics=pd.DataFrame(pd.read_csv(filepath_or_buffer=\"D:\\python\\\\testWEBPAGE\\\\topics.csv\",encoding=\"gb18030\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def change(text):\n",
    "    return re.sub(',','',str(text))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics['followers']=df_topics['followers'].apply(change)\n",
    "df_topics['qnum']=df_topics['qnum'].apply(change)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics=df_topics.drop_duplicates(subset=[\"name\",\"title\"],keep=\"first\").apply(pd.to_numeric,errors=\"ignore\").iloc[:,[1,2,3,4,5]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics['followers']=pd.to_numeric(df_topics.followers,errors='coerce').fillna(-1)\n",
    "df_topics['qnum']=pd.to_numeric(df_topics.qnum,errors='coerce').fillna(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics=df_topics[(df_topics['followers']!=-1)&(df_topics['qnum']!=-1)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_user=df_user2.iloc[:,[1,2,3]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_con=df_user.merge(df_topics,how='left',on=\"name\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics_rName=df_con.iloc[:,[3,4,5,6]].drop_duplicates(subset=\"title\",keep=\"first\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "              title  followers_y     qnum  \\\n",
       "0       PlayStation      31327.0   7183.0   \n",
       "1         集合啦！动物森友会      13990.0    459.0   \n",
       "2           怪物猎人：世界      14602.0   1798.0   \n",
       "3              潮汕地区       6928.0   5404.0   \n",
       "4               天文学    5411886.0  44173.0   \n",
       "...             ...          ...      ...   \n",
       "930365         系统设计       1308.0    844.0   \n",
       "930415         机器人学         69.0      8.0   \n",
       "930486   Don McLean         56.0     36.0   \n",
       "930614        我是路人甲        502.0     54.0   \n",
       "930631           针眼        199.0     89.0   \n",
       "\n",
       "                                                      des  \n",
       "0                                                     NaN  \n",
       "1                                                     NaN  \n",
       "2                                                     NaN  \n",
       "3                                                     NaN  \n",
       "4                                                     NaN  \n",
       "...                                                   ...  \n",
       "930365                                                NaN  \n",
       "930415                                                NaN  \n",
       "930486                                                NaN  \n",
       "930614  《我是路人甲》是尔冬升执导，由一群在横店“漂”的群众演员主演的电影。该片讲述的是一群在横店当...  \n",
       "930631  针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...  \n",
       "\n",
       "[20799 rows x 4 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>title</th>\n      <th>followers_y</th>\n      <th>qnum</th>\n      <th>des</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>PlayStation</td>\n      <td>31327.0</td>\n      <td>7183.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>集合啦！动物森友会</td>\n      <td>13990.0</td>\n      <td>459.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>怪物猎人：世界</td>\n      <td>14602.0</td>\n      <td>1798.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>潮汕地区</td>\n      <td>6928.0</td>\n      <td>5404.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>天文学</td>\n      <td>5411886.0</td>\n      <td>44173.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>930365</th>\n      <td>系统设计</td>\n      <td>1308.0</td>\n      <td>844.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930415</th>\n      <td>机器人学</td>\n      <td>69.0</td>\n      <td>8.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930486</th>\n      <td>Don McLean</td>\n      <td>56.0</td>\n      <td>36.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930614</th>\n      <td>我是路人甲</td>\n      <td>502.0</td>\n      <td>54.0</td>\n      <td>《我是路人甲》是尔冬升执导，由一群在横店“漂”的群众演员主演的电影。该片讲述的是一群在横店当...</td>\n    </tr>\n    <tr>\n      <th>930631</th>\n      <td>针眼</td>\n      <td>199.0</td>\n      <td>89.0</td>\n      <td>针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...</td>\n    </tr>\n  </tbody>\n</table>\n<p>20799 rows × 4 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 26
    }
   ],
   "source": [
    "df_topics_rName"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['KaiTi']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "#df_topics_rName dfFoLi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "              title  followers_y     qnum  \\\n",
       "0       PlayStation      31327.0   7183.0   \n",
       "1         集合啦！动物森友会      13990.0    459.0   \n",
       "2           怪物猎人：世界      14602.0   1798.0   \n",
       "3              潮汕地区       6928.0   5404.0   \n",
       "4               天文学    5411886.0  44173.0   \n",
       "...             ...          ...      ...   \n",
       "930365         系统设计       1308.0    844.0   \n",
       "930415         机器人学         69.0      8.0   \n",
       "930486   Don McLean         56.0     36.0   \n",
       "930614        我是路人甲        502.0     54.0   \n",
       "930631           针眼        199.0     89.0   \n",
       "\n",
       "                                                      des  \n",
       "0                                                     NaN  \n",
       "1                                                     NaN  \n",
       "2                                                     NaN  \n",
       "3                                                     NaN  \n",
       "4                                                     NaN  \n",
       "...                                                   ...  \n",
       "930365                                                NaN  \n",
       "930415                                                NaN  \n",
       "930486                                                NaN  \n",
       "930614  《我是路人甲》是尔冬升执导，由一群在横店“漂”的群众演员主演的电影。该片讲述的是一群在横店当...  \n",
       "930631  针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...  \n",
       "\n",
       "[20799 rows x 4 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>title</th>\n      <th>followers_y</th>\n      <th>qnum</th>\n      <th>des</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>PlayStation</td>\n      <td>31327.0</td>\n      <td>7183.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>集合啦！动物森友会</td>\n      <td>13990.0</td>\n      <td>459.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>怪物猎人：世界</td>\n      <td>14602.0</td>\n      <td>1798.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>潮汕地区</td>\n      <td>6928.0</td>\n      <td>5404.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>天文学</td>\n      <td>5411886.0</td>\n      <td>44173.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>930365</th>\n      <td>系统设计</td>\n      <td>1308.0</td>\n      <td>844.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930415</th>\n      <td>机器人学</td>\n      <td>69.0</td>\n      <td>8.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930486</th>\n      <td>Don McLean</td>\n      <td>56.0</td>\n      <td>36.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>930614</th>\n      <td>我是路人甲</td>\n      <td>502.0</td>\n      <td>54.0</td>\n      <td>《我是路人甲》是尔冬升执导，由一群在横店“漂”的群众演员主演的电影。该片讲述的是一群在横店当...</td>\n    </tr>\n    <tr>\n      <th>930631</th>\n      <td>针眼</td>\n      <td>199.0</td>\n      <td>89.0</td>\n      <td>针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...</td>\n    </tr>\n  </tbody>\n</table>\n<p>20799 rows × 4 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 29
    }
   ],
   "source": [
    "df_topics_rName"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics_rName=df_topics_rName.rename(columns={\"followers_y\":\"followers\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_topics_rName=df_topics_rName[~pd.isna(df_topics_rName.des)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dfFoLi['info'].apply(pd.isna)\r\n",
    "dfFoLi=dfFoLi[~pd.isna(dfFoLi['info'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "     "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [title, followers, qnum, des]\n",
       "Index: []"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>title</th>\n      <th>followers</th>\n      <th>qnum</th>\n      <th>des</th>\n    </tr>\n  </thead>\n  <tbody>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "execution_count": 33
    }
   ],
   "source": [
    "df_topics_rName[df_topics_rName['title']==\"超级乐队\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# def wash(li):\n",
    "#     mean1 = li.quantile(q=0.25)#下四分位差\n",
    "#     mean2 = li.quantile(q=0.75)#上四分位差\n",
    "#     mean3 = mean2-mean1#中位差\n",
    "#     topnum2 = mean2+1.5*mean3\n",
    "#     bottomnum2 = mean2-1.5*mean3\n",
    "#     replace_value1=li[li<topnum2].max()\n",
    "#     return replace_value1,topnum2\n",
    "    # replace_value2=df_user2['followers'][df_user2['followers']>bottomnum2].min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dfFoLi_wash=dfFoLi\n",
    "# # print(wash(df_user['followers']))\n",
    "# replace_value1,topnum2=wash(dfFoLi_wash['followers'])\n",
    "# dfFoLi_wash.loc[dfFoLi_wash['followers']>topnum2,'followers']=topnum2\n",
    "# df_user1.loc[df_user2['followers']<bottomnum2,'followers']=replace_value2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# replace_value2,topnum3=wash(dfFoLi_wash['like'])\n",
    "# dfFoLi_wash.loc[dfFoLi_wash['like']>topnum3,'like']=topnum3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# app.run_server()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_posts=pd.DataFrame(pd.read_csv(filepath_or_buffer=\"D:\\python\\\\testWEBPAGE\\posts.csv\",encoding=\"gb18030\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_posts=df_posts[df_posts.content.str.len()>20].iloc[:,[1,2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "9693"
      ]
     },
     "metadata": {},
     "execution_count": 40
    }
   ],
   "source": [
    "len(df_posts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                                                content  voteCount\n",
       "0     2004年播出的电视剧《武当》，是由焦恩俊和李若彤两大男神女神主演。当少年张三丰（张君宝）被...    2382036\n",
       "1     ​​前一段时间沉迷了一段时间《只狼》​，事实上在这之前我并没有接触过宫崎英高的游戏，虽然久仰...    2114265\n",
       "2      全文2800字左右，预计阅读时间5分钟    在一万多年前的北美大陆上，当最后一匹庞马倒在...    2082148\n",
       "3     据悉，11月25日下午，杨超越在七度空间举办的粉丝见面会上，在才艺表演环节现场绘画，画了一张...    2068125\n",
       "4      1，为什么付出太多的感情，带不来幸福美满的婚姻？      前几天看到一条抖音视频，是一位...    1947139\n",
       "...                                                 ...        ...\n",
       "9995  在你敲下第一个字的那一刻开始  你踌躇满志，心潮澎湃  你下定决心，鼓起勇气  你要用文字表...      10307\n",
       "9996  一些可可爱爱的自动回复文案    已读      喂猪中        别催我！！！    ...      10303\n",
       "9997  今天是 1月14号 。  三年前的今天，他变成了一颗星星，去了天上。            ...      10301\n",
       "9998  早上中午大份酸奶水果捞  办了水果捞的卡  一个大份只要7.5  以后应该会经常点了  不过...      10299\n",
       "9999        是散谈，不想深刻，不知聊到哪就会停 以下内容可作为茶余饭后奇怪角度的谈资。   ...      10297\n",
       "\n",
       "[9693 rows x 2 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>content</th>\n      <th>voteCount</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2004年播出的电视剧《武当》，是由焦恩俊和李若彤两大男神女神主演。当少年张三丰（张君宝）被...</td>\n      <td>2382036</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>​​前一段时间沉迷了一段时间《只狼》​，事实上在这之前我并没有接触过宫崎英高的游戏，虽然久仰...</td>\n      <td>2114265</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>全文2800字左右，预计阅读时间5分钟    在一万多年前的北美大陆上，当最后一匹庞马倒在...</td>\n      <td>2082148</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>据悉，11月25日下午，杨超越在七度空间举办的粉丝见面会上，在才艺表演环节现场绘画，画了一张...</td>\n      <td>2068125</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1，为什么付出太多的感情，带不来幸福美满的婚姻？      前几天看到一条抖音视频，是一位...</td>\n      <td>1947139</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>9995</th>\n      <td>在你敲下第一个字的那一刻开始  你踌躇满志，心潮澎湃  你下定决心，鼓起勇气  你要用文字表...</td>\n      <td>10307</td>\n    </tr>\n    <tr>\n      <th>9996</th>\n      <td>一些可可爱爱的自动回复文案    已读      喂猪中        别催我！！！    ...</td>\n      <td>10303</td>\n    </tr>\n    <tr>\n      <th>9997</th>\n      <td>今天是 1月14号 。  三年前的今天，他变成了一颗星星，去了天上。            ...</td>\n      <td>10301</td>\n    </tr>\n    <tr>\n      <th>9998</th>\n      <td>早上中午大份酸奶水果捞  办了水果捞的卡  一个大份只要7.5  以后应该会经常点了  不过...</td>\n      <td>10299</td>\n    </tr>\n    <tr>\n      <th>9999</th>\n      <td>是散谈，不想深刻，不知聊到哪就会停 以下内容可作为茶余饭后奇怪角度的谈资。   ...</td>\n      <td>10297</td>\n    </tr>\n  </tbody>\n</table>\n<p>9693 rows × 2 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 41
    }
   ],
   "source": [
    "df_posts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def getImagePost(i):\n",
    "    txt=\"\"\n",
    "    for post in df_posts.content[i]:\n",
    "        for line in post:\n",
    "            txt=txt+line.strip()\n",
    "    words = jieba.lcut(txt)                                        #精确分词\n",
    "    newtxt = ' '.join(words)                                       #空格拼接\n",
    "    wordcloud = WordCloud(font_path=\"msyh.ttc\").generate(newtxt)   #生成词云，font_path=\"msyh.ttc\"为选择微软雅黑字体\n",
    "    image = wordcloud.to_image()\n",
    "    return image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "def getPost(i):\n",
    "    return df_posts.iloc[i,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "show=df_user2.merge(df_topics,on='name')#内部连接才好显示\n",
    "show=show[~pd.isna(show.like)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                             _id           name                         info  \\\n",
       "0       60a72e0d8c2a661d16fd7b3b       赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "1       60a72e0d8c2a661d16fd7b3b       赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "2       60a72e0d8c2a661d16fd7b3b       赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "3       60a72e0d8c2a661d16fd7b3b       赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "4       60a72e0d8c2a661d16fd7b3b       赛勃朋克2077  学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神   \n",
       "...                          ...            ...                          ...   \n",
       "311854  60a792888c2a661d161cad6d           梧桐树下                        数学，金融   \n",
       "311857  60a7928b8c2a661d161cae18        吃兔兔的突突兔               我要吃果冻要吃海苔要吃巧克力   \n",
       "311860  60a7928f8c2a661d161caed8            萧慕辰                     经管类专业的现状   \n",
       "311861  60a792928c2a661d161caf9c  Preacher.1379                         emm…   \n",
       "311863  60a792948c2a661d161cafe3            大佬师                      摸猫摸狗不洗手   \n",
       "\n",
       "        followers_x      like        title  followers_y     qnum  \\\n",
       "0             68257  290392.0  PlayStation      31327.0   7183.0   \n",
       "1             68257  290392.0    集合啦！动物森友会      13990.0    459.0   \n",
       "2             68257  290392.0      怪物猎人：世界      14602.0   1798.0   \n",
       "3             68257  290392.0         潮汕地区       6928.0   5404.0   \n",
       "4             68257  290392.0          天文学    5411886.0  44173.0   \n",
       "...             ...       ...          ...          ...      ...   \n",
       "311854           55      37.0         坚果手机       4915.0   1982.0   \n",
       "311857          554    8420.0        汽车蓄电池        498.0    856.0   \n",
       "311860          100      40.0   Don McLean         56.0     36.0   \n",
       "311861           25     473.0       第10放映室       6388.0    118.0   \n",
       "311863           56    6632.0           针眼        199.0     89.0   \n",
       "\n",
       "                                                      des  \n",
       "0                                                     NaN  \n",
       "1                                                     NaN  \n",
       "2                                                     NaN  \n",
       "3                                                     NaN  \n",
       "4                                                     NaN  \n",
       "...                                                   ...  \n",
       "311854  坚果手机是锤子科技推出的手机品牌，该系列于2015年8月正式发布，定位群体为年轻人，搭载 S...  \n",
       "311857                                                NaN  \n",
       "311860                                                NaN  \n",
       "311861  《第10放映室》是由中央电视台科教频道（CCTV10）推出的电影文化介绍栏目，王玲玲主持，于...  \n",
       "311863  针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...  \n",
       "\n",
       "[215990 rows x 9 columns]"
      ],
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>_id</th>\n      <th>name</th>\n      <th>info</th>\n      <th>followers_x</th>\n      <th>like</th>\n      <th>title</th>\n      <th>followers_y</th>\n      <th>qnum</th>\n      <th>des</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n      <td>PlayStation</td>\n      <td>31327.0</td>\n      <td>7183.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n      <td>集合啦！动物森友会</td>\n      <td>13990.0</td>\n      <td>459.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n      <td>怪物猎人：世界</td>\n      <td>14602.0</td>\n      <td>1798.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n      <td>潮汕地区</td>\n      <td>6928.0</td>\n      <td>5404.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>60a72e0d8c2a661d16fd7b3b</td>\n      <td>赛勃朋克2077</td>\n      <td>学习曹丰泽精神：中国青年人扎实肯干、吃苦耐劳的非洲精神</td>\n      <td>68257</td>\n      <td>290392.0</td>\n      <td>天文学</td>\n      <td>5411886.0</td>\n      <td>44173.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>311854</th>\n      <td>60a792888c2a661d161cad6d</td>\n      <td>梧桐树下</td>\n      <td>数学，金融</td>\n      <td>55</td>\n      <td>37.0</td>\n      <td>坚果手机</td>\n      <td>4915.0</td>\n      <td>1982.0</td>\n      <td>坚果手机是锤子科技推出的手机品牌，该系列于2015年8月正式发布，定位群体为年轻人，搭载 S...</td>\n    </tr>\n    <tr>\n      <th>311857</th>\n      <td>60a7928b8c2a661d161cae18</td>\n      <td>吃兔兔的突突兔</td>\n      <td>我要吃果冻要吃海苔要吃巧克力</td>\n      <td>554</td>\n      <td>8420.0</td>\n      <td>汽车蓄电池</td>\n      <td>498.0</td>\n      <td>856.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>311860</th>\n      <td>60a7928f8c2a661d161caed8</td>\n      <td>萧慕辰</td>\n      <td>经管类专业的现状</td>\n      <td>100</td>\n      <td>40.0</td>\n      <td>Don McLean</td>\n      <td>56.0</td>\n      <td>36.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>311861</th>\n      <td>60a792928c2a661d161caf9c</td>\n      <td>Preacher.1379</td>\n      <td>emm…</td>\n      <td>25</td>\n      <td>473.0</td>\n      <td>第10放映室</td>\n      <td>6388.0</td>\n      <td>118.0</td>\n      <td>《第10放映室》是由中央电视台科教频道（CCTV10）推出的电影文化介绍栏目，王玲玲主持，于...</td>\n    </tr>\n    <tr>\n      <th>311863</th>\n      <td>60a792948c2a661d161cafe3</td>\n      <td>大佬师</td>\n      <td>摸猫摸狗不洗手</td>\n      <td>56</td>\n      <td>6632.0</td>\n      <td>针眼</td>\n      <td>199.0</td>\n      <td>89.0</td>\n      <td>针眼病，中医病名。是眼科疾病里面比较常见的症状之一，主要多因内热外毒攻窜上炎导致.其主要特点...</td>\n    </tr>\n  </tbody>\n</table>\n<p>215990 rows × 9 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 45
    }
   ],
   "source": [
    "show"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "show.loc[:,\"followers_range\"]=pd.cut(show['followers_x'], bins=listBins, labels=listLabels, include_lowest=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "show=show.iloc[:,[1,2,3,4,5,6,7,9]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_groups=show.groupby(by=\"followers_range\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002352F6B3760>"
      ]
     },
     "metadata": {},
     "execution_count": 49
    }
   ],
   "source": [
    "show_groups"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_groups_con=pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "for name,group in show_groups:\n",
    "    show_groups_con=show_groups_con.append(group.sample(n=10,replace=False))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "result=lambda x:np.log2(10*x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_groups_con.loc[:,\"like\"]=list(map(result,show_groups_con[\"like\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_other=show.iloc[:,[0,4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_other=show_other.drop_duplicates(subset=[\"name\",\"title\"],keep=\"first\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('.\\\\social.json','r',encoding=\"GB18030\") as f:\n",
    "    social_pic=json.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "def change2(x):\n",
    "    return '是' if x else '否'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_social_ans_show():\n",
    "    social_ans=dict()\n",
    "    while (len(social_ans)<1000):\n",
    "        s=0\n",
    "        ns=np.random.choice(list(social_pic.keys()),replace=False)\n",
    "        ls=social_pic[ns]\n",
    "        for i in ls :\n",
    "            s=s+len(social_pic[i])\n",
    "        else:\n",
    "            if(len(ls)!=0):\n",
    "                social_ans[ns]=(s/len(ls),len(ls))\n",
    "    social_ans_show=pd.DataFrame(social_ans)\n",
    "    social_ans_show=pd.DataFrame(social_ans_show.T,index=social_ans_show.columns,columns=[0,1])\n",
    "    social_ans_show=social_ans_show.rename(columns={0:\"好友平均受欢迎度\",1:\"自身受欢迎度\"})\n",
    "    social_ans_show.loc[:,'好友是否比你受欢迎']=list(map(change2,social_ans_show['好友平均受欢迎度']>social_ans_show['自身受欢迎度']))\n",
    "    social_ans_show2=social_ans_show.groupby(by='好友是否比你受欢迎').size()\n",
    "    return social_ans_show,social_ans_show2"
   ]
  },
  {
   "source": [
    "\n",
    "\n",
    "external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']\n",
    "\n",
    "app = dash.Dash(__name__, external_stylesheets=external_stylesheets)\n",
    "\n",
    "app.layout = html.Div([\n",
    "    html.Button(\n",
    "        id='submit3',\n",
    "        n_clicks=0,\n",
    "        children='随机取样'\n",
    "    ),\n",
    "    dcc.Graph(\n",
    "        id='G4'\n",
    "    ),\n",
    "    dcc.Graph(\n",
    "        id='G5'\n",
    "    )\n",
    "])\n",
    "\n",
    "@app.callback(\n",
    "    Output('G4','figure'),\n",
    "    Output('G5','figure'),\n",
    "    Input('submit3','n_clicks')\n",
    ")\n",
    "def update_figure2(value):\n",
    "    social_ans_show,social_ans_show2=get_social_ans_show()\n",
    "    fig1=px.scatter(x=social_ans_show['好友平均受欢迎度'],y=social_ans_show['自身受欢迎度'],hover_name=social_ans_show.index,color=social_ans_show['好友是否比你受欢迎'])\n",
    "    fig2=px.pie(social_ans_show2,values=social_ans_show2,names=social_ans_show2.index,title='好友是否比你受欢迎')\n",
    "    return fig1,fig2\n",
    "\n"
   ],
   "cell_type": "code",
   "metadata": {},
   "execution_count": 59,
   "outputs": []
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# app.run_server()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']\n",
    "\n",
    "app = dash.Dash(__name__, external_stylesheets=external_stylesheets)\n",
    "app.layout = html.Div([\n",
    "    html.Div([\n",
    "     html.H1('热门用户与主题及其相关查询',style={\"text-align\":\"center\",\"color\":\"blue\"}),\n",
    "    html.Div([\n",
    "        dcc.Dropdown(\n",
    "        id='S1'\n",
    "    ),\n",
    "    dcc.Dropdown(\n",
    "        id='S2',\n",
    "        options=[{\"label\":\"user\",\"value\":\"user\"},{\"label\":\"topics\",\"value\":\"topics\"}],\n",
    "        value=\"user\"\n",
    "    ),\n",
    "    dcc.Input(id=\"S3\", type=\"number\", value=10),\n",
    "    ],style={'width': '48%','display':'inline-block'}),\n",
    "    dcc.Graph(\n",
    "        id='G1',\n",
    "    ),\n",
    "    html.Div([\n",
    "        dcc.Input(\n",
    "            id='keyword',\n",
    "            type='text'\n",
    "        ),\n",
    "        html.Button(\n",
    "            id='submit',\n",
    "            n_clicks=0,\n",
    "            children=\"user\"\n",
    "        )\n",
    "    ]),\n",
    "    html.Div(\n",
    "        id='text'\n",
    "    ),\n",
    "    html.Div(\n",
    "        id='text2'\n",
    "    ),\n",
    "    html.Hr(id=\"r1\"),\n",
    "      html.H1('答主中点赞数与粉丝数的关系以及人数占比',style={\"text-align\":\"center\",\"color\":\"blue\"}),\n",
    "        dcc.Graph(\n",
    "            id='G2',\n",
    "            figure=go.Figure(\n",
    "                data=[go.Scatter(x=dfFoLi_show.index,y=dfFoLi_show.num,name=\"人数\"),go.Scatter(x=dfFoLi_show.index,y=dfFoLi_show.like,name=\"用户点赞数\")],\n",
    "                layout=go.Layout(\n",
    "                    xaxis=dict(title=\"用户粉丝数\")\n",
    "                )\n",
    "            )\n",
    "        )\n",
    "    ]),\n",
    "    html.Hr(id=\"r2\"),\n",
    "    html.Div([\n",
    "    html.H1('文章及其词云图查询',style={\"text-align\":\"center\",\"color\":\"blue\"}),\n",
    "    dcc.Input(id='input-1-state', type=\"number\", value=1,min=1,max=9650),\n",
    "    html.Button(id='submit-button-state', n_clicks=0, children='Submit'),\n",
    "    html.P(id=\"text3\"),\n",
    "    html.Img(id='output-state',style={\"margin\":\"0 auto\"})\n",
    "]),\n",
    "html.Hr(id=\"r3\"),\n",
    "html.Div([\n",
    "    html.H1('用户热度与所参与话题热度的关系(多维度)',style={\"text-align\":\"center\",\"color\":\"blue\"}),\n",
    "    html.Button(\n",
    "        id='submit2',\n",
    "        n_clicks=0,\n",
    "        children=\"生成\",\n",
    "        style={\"margin\":\"0 auto\"}\n",
    "        \n",
    "    ),\n",
    "    dcc.Graph(\n",
    "        id='G3',\n",
    "     )\n",
    "]),\n",
    "html.Hr(id='r4'),\n",
    "html.Div([\n",
    "    html.H1('验证友谊悖论-你的朋友总是比你更受欢迎',style={\"text-align\":\"center\",\"color\":\"blue\"}),\n",
    "    html.Button(\n",
    "        id='submit3',\n",
    "        n_clicks=0,\n",
    "        children='随机取样'\n",
    "    ),\n",
    "    dcc.Graph(\n",
    "        id='G4'\n",
    "    ),\n",
    "    dcc.Graph(\n",
    "        id='G5'\n",
    "    )\n",
    "])\n",
    "])\n",
    "@app.callback(\n",
    "    Output('S1','options'),\n",
    "    Output('submit','children'),\n",
    "    Input('S2','value')\n",
    ")\n",
    "def set_options(value):\n",
    "    options=[{'label':\"followers\",'value':\"followers\"},{'label':\"like\",'value':\"like\"}]\n",
    "    if(value==\"user\"):\n",
    "        options=[{'label':\"followers\",'value':\"followers\"},{'label':\"like\",'value':\"like\"}]\n",
    "    if(value==\"topics\"):\n",
    "        options=[{'label':\"followers\",'value':\"followers\"},{'label':\"qnum\",'value':\"qnum\"}]\n",
    "    return options,value\n",
    "\n",
    "@app.callback(\n",
    "    Output('S1','value'),\n",
    "    Input('S1','options')\n",
    ")\n",
    "def set_value(options):\n",
    "    return options[0]['value']\n",
    "\n",
    "@app.callback(\n",
    "    Output('G1','figure'),\n",
    "    Input('S1','value'),\n",
    "    Input('S2','value'),\n",
    "    Input('S3','value')\n",
    ")\n",
    "def ipdate_figure(value1,value2,value3):\n",
    "    df_fig=dfFoLi\n",
    "    x=\"name\"\n",
    "    xname=\"用户名称\"\n",
    "    yname=\"关注数\"\n",
    "    if(value2==\"user\"):\n",
    "        df_fig=dfFoLi\n",
    "        x=\"name\"\n",
    "        if(value1=='like'):\n",
    "            yname=\"用户点赞数\"\n",
    "    if(value2==\"topics\"):\n",
    "        df_fig=df_topics_rName\n",
    "        x=\"title\"\n",
    "        xname=\"话题名称\"\n",
    "        if(value1=='qnum'):\n",
    "            yname='话题提问数'\n",
    "    df_fig=df_fig.sort_values(by=value1,ascending=False).head(value3)\n",
    "    f=px.bar(x=df_fig[x],y=df_fig[value1],labels={'x':xname,'y':yname})\n",
    "    return f\n",
    "@app.callback(\n",
    "    Output('text','children'),\n",
    "    Output('text2','children'),\n",
    "    Input('submit','n_clicks'),\n",
    "    State('submit','children'),\n",
    "    State('keyword','value')\n",
    ")\n",
    "def set_text(n_clicks,input1,input2):\n",
    "    if(input1=='user'):\n",
    "        if(len(df_con[df_con['name']==input2])==0):\n",
    "            return \"查无此人\",\"\"\n",
    "        vs1=str(df_con[df_con['name']==input2].iloc[0]['info'])\n",
    "        vs2=\"所关注话题:\"+\" \".join(str(s) for s in list(df_con[df_con['name']==input2].head(10)[\"title\"].unique()))+\"等\"\n",
    "        if(vs1=='nan'):\n",
    "            vs1='无'\n",
    "        if(len(list(df_con[df_con['name']==input2]))==0):\n",
    "            vs2='无'\n",
    "        return vs1,vs2\n",
    "    if(input1=='topics'):\n",
    "        if(len(df_con[df_con['title']==input2])==0):\n",
    "            return \"查无此话题\",\"\"\n",
    "        vs1=str(df_con[df_con['title']==input2].iloc[0]['des'])\n",
    "        vs2=\"代表用户:\"+\" \".join(str(s) for s in list(df_con[df_con['title']==input2].head(10)[\"name\"].unique()))+\"等\"\n",
    "        if(vs1=='nan'):\n",
    "            vs1='无'\n",
    "        if(len(list(df_con[df_con['title']==input2]))==0):\n",
    "            vs2='无'\n",
    "        return vs1,vs2\n",
    "@app.callback(Output('output-state', 'src'),\n",
    "              Output('text3','children'),\n",
    "              Input('submit-button-state', 'n_clicks'),\n",
    "              State('input-1-state', 'value'),\n",
    ")\n",
    "def update_output(n_clicks, input1):\n",
    "    return getImagePost(input1-1),getPost(input1-1)\n",
    "\n",
    "@app.callback(\n",
    "    Output('G3','figure'),\n",
    "    Input('submit2','n_clicks')\n",
    ")\n",
    "def update_grenate(value):\n",
    "    show_groups_con=pd.DataFrame()\n",
    "    for name,group in show_groups:\n",
    "        show_groups_con=show_groups_con.append(group.sample(n=10,replace=False))\n",
    "    show_groups_con.loc[:,\"like\"]=list(map(result,show_groups_con[\"like\"]))\n",
    "    fig=px.scatter(show_groups_con,x=\"followers_y\",y=\"qnum\",size=\"like\",color=\"followers_range\",hover_name=\"title\",labels={\n",
    "        \"followers_y\":\"话题关注数\",\"qnum\":\"话题提问数\",\"followers_range\":\"用户粉丝范围\",\"like\":\"用户点赞数\"\n",
    "    })\n",
    "    return fig\n",
    "@app.callback(\n",
    "    Output('G4','figure'),\n",
    "    Output('G5','figure'),\n",
    "    Input('submit3','n_clicks')\n",
    ")\n",
    "def update_figure2(value):\n",
    "    social_ans_show,social_ans_show2=get_social_ans_show()\n",
    "    fig1=px.scatter(x=social_ans_show['好友平均受欢迎度'],y=social_ans_show['自身受欢迎度'],hover_name=social_ans_show.index,color=social_ans_show['好友是否比你受欢迎'],labels={\"x\":\"好友受欢迎程度\",\"y\":\"自身受欢迎程度\"})\n",
    "    fig2=px.pie(social_ans_show2,values=social_ans_show2,names=social_ans_show2.index,title='好友是否比你受欢迎')\n",
    "    return fig1,fig2\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Dash is running on http://127.0.0.1:8050/\n",
      "\n",
      "Dash is running on http://127.0.0.1:8050/\n",
      "\n",
      " * Serving Flask app \"__main__\" (lazy loading)\n",
      " * Environment: production\n",
      "   WARNING: This is a development server. Do not use it in a production deployment.\n",
      "   Use a production WSGI server instead.\n",
      " * Debug mode: off\n",
      " * Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:36] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:37] \"\u001b[37mGET /_dash-dependencies HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:37] \"\u001b[37mGET /_dash-layout HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:37] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "Building prefix dict from the default dictionary ...\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:37] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "Loading model from cache C:\\Users\\xzy12\\AppData\\Local\\Temp\\jieba.cache\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:37] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "Loading model cost 2.347 seconds.\n",
      "Prefix dict has been built successfully.\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:44] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:44] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:44] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n",
      "127.0.0.1 - - [22/Jun/2021 20:52:44] \"\u001b[37mPOST /_dash-update-component HTTP/1.1\u001b[0m\" 200 -\n"
     ]
    }
   ],
   "source": [
    "app.run_server()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ]
}